package com.ray.auth.system.service;

import java.util.List;

import org.springframework.stereotype.Service;

import com.ray.auth.system.table.entity.User;
import com.zjhc.flyhong.common.function.operator.LoginUser;
import com.zjhc.flyhong.common.function.operator.PageDto;
import com.zjhc.flyhong.common.web.Result;

/**
 * <h1>用户服务  服务接口</h1>
 * @创建人 ray
 * @创建时间 2017-06-10
 * @版本 1.0
 * @重要修改备注 
 * 
 */
@Service
public interface UserService {
	/***
	 * @描述 <h1>获取用户</h1><br/>
	 * @参数 loginName 登录名称
	 * @返回 user
	 */
	public User queryUser(String loginName);
	/***
	 * @描述 <h1>获取用户</h1><br/>
	 * @参数 userId 用户id
	 * @返回 user
	 */
	public User queryUserByUserId(String userId);
	/**
	 * 新增用户
	 * @param params 用户对象
	 * @param loginUser 登录用户
	 * @return
	 */
	public Result<Object> addUser(User params, LoginUser loginUser);
	/**
	 * 查询用户
	 * @param id 用户ID
	 * @param user
	 * @return
	 */
	public User queryUser(String id, LoginUser user);
	/**
	 * 更新用户信息
	 * @param params 用户信息
	 * @param loginUser
	 * @return
	 */
	public Result<Object> updateUser(User params, LoginUser loginUser);
	/**
	 * 删除用户
	 * @param id
	 * @param loginUser
	 * @return
	 */
	public Result<Object> deleteUser(String id, LoginUser loginUser);
	/**
	 * 分页查询用户
	 * @param params
	 * @param page
	 * @param loginUser
	 * @return
	 */
	public PageDto<User> queryUserList(User params, PageDto<User> page, LoginUser loginUser);
	/**
	 * 新增系统管理员
	 * @param params 用户对象
	 * @param loginUser 登录用户
	 * @return
	 */
	public Result<Object> addManagerUser(String id, LoginUser loginUser);
	/**
	 * 取消系统管理员系统管理员
	 * @param params 用户对象
	 * @param loginUser 登录用户
	 * @return
	 */
	public Result<Object> cancelManagerUser(String id, LoginUser loginUser);
	/**
	 * 重置密码
	 * @param params 用户对象
	 * @param loginUser 登录用户
	 * @return
	 */
	public Result<Object> resetPassword(String id, LoginUser loginUser);
	/**
	 * 新增接口用户
	 * @param systemUser
	 * @param loginUser
	 * @return
	 */
	public Result<Object> addInterfaceUser(User systemUser, LoginUser loginUser);
	/**
	 * 获取接口登录用户对象
	 * @param tenantId
	 * @return
	 */
	public LoginUser getInerfaceUser(String tenantId);
	/**
	 * 
	 * @param params 更新密码
	 * @param hisPassword 历史密码
	 * @param loginUser
	 * @return
	 */
	public Result<Object> updatePassword(User params, String hisPassword, LoginUser loginUser);
	/**
	 * 系统随机用户
	 * @return
	 */
	public User queryAdminUser();
	/**
	 * 获取IDS对应的用户
	 * @param ids
	 * @return
	 */
	public List<User> queryUser(List<String> ids);
	/**
	 * 回去用户信息
	 * @param userIds
	 * @param roleIds
	 * @param user
	 * @return
	 */
	public List<User> queryUserList(List<String> userIds, List<String> roleIds, LoginUser user);
}
